package ForumDiscussion;

import java.awt.*;
import java.awt.event.*;

// import ihm.*;
import java.rmi.*;
// import java.rmi.registry.*;

public class ClientForum extends Frame {

	Button boutonIncriptionSport = new Button("sport");
	Button boutonIncriptionMusique = new Button("musique");
	Button boutonIncriptionCinema = new Button("cinema");

	// modele de reaction a un bouton d'inscription
	class ActionInscription implements ActionListener {
		private String titre;
		private boolean inscrit = false;
		private AffichageClient c; // afficheur associe au sujet (quand inscrit)
		private InterfaceSujetDiscussion sujet; // le sujet associe au bouton
		
		//cr�ateur
		public ActionInscription(String titre) {
			this.titre = titre;
		}
		
		// effet bouton
		public synchronized void actionPerformed(ActionEvent e) {
			try {
				System.out.println(titre);
				sujet = leServeur.obtientSujet(titre);
			} catch (RemoteException e1) {
				System.err.println("le sujet n'existe pas");
				e1.printStackTrace();
			}
			try {
				c = new AffichageClient(titre, sujet);
				if(c == null)
				{
					System.out.println("c est nulle");
				}
				if(sujet == null)
				{
					System.out.println("sujet est nul");
				}
				sujet.inscription(c);
			} catch (RemoteException e2) {
				System.err.println("impossible d'afficher la discution !");
				e2.printStackTrace();
			}
		}
	}

	InterfaceServeurForum leServeur;
	
	
//---------------- createur client forum ------------------------------------------
	
	public ClientForum(String nomMachine) {

		//rend la fenetre fermable
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		//lookup serveur
		try {
			leServeur = (InterfaceServeurForum) Naming.lookup("//" + nomMachine + ":8688/leServeur");
		} catch (Exception e) {
			System.out.println("erreur lookup");
			return;
		}
		
		//organisation de la fenetre
		Placement.p(this, boutonIncriptionSport, 1, 1, 1, 1);
		Placement.p(this, boutonIncriptionMusique, 2, 1, 1, 1);
		Placement.p(this, boutonIncriptionCinema, 3, 1, 1, 1);
		boutonIncriptionSport.addActionListener(new ActionInscription("sport"));
		boutonIncriptionMusique.addActionListener(new ActionInscription("musique"));
		boutonIncriptionCinema.addActionListener(new ActionInscription("cinema"));
		setLocation(100, 100);
		setVisible(true);
		pack();
	}

//############ MAIN #####################################################################
	
	public static void main(String[] argv) {
		String nomMachine = "localHost";
		new ClientForum(nomMachine);
	}
}
